package com.linkai.注解和反射.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Description: 自定义注解
 * @Author: 林凯
 * @Date: 2021/10/21 14:32
 */
public class Test03 {

    // 注解可以赋值，如果没有默认值，我们就必须给注解赋值
    @MyAnnotation2(name = "jacklin", school = {"NCU", "清华"})
    public void test() {
    }

    @MyAnnotation3("jacklin")
    public void test2() {

    }
}

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{

    // 注解的参数：参数类型 + 参数名()
    // 记得后面还有一个括号()
    String name() default "";
    int age() default 0;
    int id() default -1;        // 如果默认值为-1，代表不存在； indexOf，如果找不到就不存在

    String[] school() default {"阿里", "字节"};
}

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3 {
    // 如果只有一个参数，建议使用value命名
    String value();
}
